// 通过vue-router插件实现模拟路由配置
import { createRouter, createWebHistory } from 'vue-router'
// 引入常量路由
import { constantRouter } from './routes.ts'
// 引入项目的标题
import setting from '@/setting'
// 引入进度条样式
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import useTeacherStore from '@/store/modules/teacher'
// 不要进度条加载的圆圈
nprogress.configure({ showSpinner: false })

// 创建路由器
const router = createRouter({
  // 路由模式history模式
  history: createWebHistory(),
  // 路由配置
  routes: constantRouter,
  // 滚动行为
  scrollBehavior() {
    return {
      left: 0,
      top: 0,
    }
  },
})

router.beforeEach(async (to: any, _from: any, next: any) => {
  // 网页标题设置
  document.title = `${setting.title} - ${to.meta.title}`
  const teacherStore: any = useTeacherStore()
  // to：你将要访问的路由
  // from：你从哪个路由来到当前路由
  // next：路由的放行函数，必写
  // 使用userStore接收数据，只能在router函数里面接收，外部接收会报错
  nprogress.start()
  if (teacherStore.token) {
    // 已登录
    next()
  } else {
    // 未登录
    if (to.path === '/login') {
      next()
    } else {
      // 未登录不让访问除login的页面，访问了会重定向回login，并把要去的地址给到redirect上
      next({ path: '/login' })
    }
  }
  next()
})
router.afterEach(() => {
  nprogress.done()
})
export default router
